package org.hamcrest.object; import static org.hamcrest.core.IsEqual.equalTo; import org.hamcrest.Factory; import org.hamcrest.FeatureMatcher; import org.hamcrest.Matcher; public class HasToString<T> extends FeatureMatcher<T, String> { public HasToString(Matcher<? super String> toStringMatcher) { super(toStringMatcher, "with toString()", "toString()"); } @Override protected String featureValueOf(T actual) { return actual.toString(); }; /** * Evaluates whether item.toString() satisfies a given matcher. */ @Factory public static <T> Matcher<T> hasToString(Matcher<? super String> toStringMatcher) { return new HasToString<T>(toStringMatcher); } /** * This is a shortcut to the frequently used has_string(equalTo(x)). * * For example, assertThat(hasToString(equal_to(x))) * vs. assertThat(hasToString(x)) */ @Factory public static <T> Matcher<T> hasToString(String expectedToString) { return new HasToString<T>(equalTo(expectedToString)); } }